import Watcher from "../observe/watcher"
import { patch } from "../vdom/patch"

export function lifecycleMixin (Vue) {
  Vue.prototype._update = function (vnode) {
    let vm = this
    // console.log(vnode, 'vnode')
    // 根据虚拟dom生成真实dom  既有初始话又有更新
    vm.$el = patch(vm.$el, vnode) //patch=>核心的diff   vnode替换div
  }
}
// 后续每个组件渲染时都会有一个watcher
export function mountComponent (vm, el) {
  // 数据变化后  会再次调用此函数
  let updateComponent = () => {
    // 调用render函数，生成虚拟dom
    vm._update(vm._render());//调刚才写好的render  更新调用update
    // 用虚拟dom 生成真实dom

  }
  new Watcher(vm, updateComponent, () => {

  }, true)
  // 加标识  是渲染watcher  后续有其他watcher
}